
#include "value.h"

int scmp(const void* sp1, const void* sp2)
{
    value_t *v1;char* word;
    v1 = (value_t*)sp1;
    word = (char*)sp2;
    return strcmp(v1->word,word);
}

int svcmp(const void* sp1, const void* sp2)
{
    value_t *v1,*v2;
    v1 = (value_t*)sp1; v2 = (value_t*)sp2;
    return strcmp(v1->word,v2->word);
}

int idcmp(const void* sp1, const void* sp2)
{
    value_t *v1;
    int id = *((int*)sp2);
    v1 = (value_t*)sp1;
    return v1->id - id;
}

int cntcmp(const void* sp1, const void* sp2)
{
    value_t* v1 = (value_t*)sp1;
    value_t* v2 = (value_t*)sp2;
    return (v2->count - v1->count);
}

void delete_value(void* data)
{
    value_t* v;
    v = (value_t*)data;
    free(v->word);
    free(v);
}

void insertion_sort (value_t** A, int n, 
                     int (*cmp_fptr)(const void*,const void*))
{
 
  int i, j;
  value_t *v; 

  for( i=1; i<n; i++)
  {
    v = A[i];
    j = i-1;
    while( j >= 0 && cmp_fptr( A[j], v ) > 0 )
    {
       A[j+1] = A[j]; 
       j--;
    }
    A[j+1] = v;
  }

}

